/**
* Copyright (C) 2013-2015
*
* @file   S_2_Lock_doSet.c
*
* @remark
*
*/

#include "S_2_Lock_doSet.h"
//#include "S_2_Light_doChange.h"
#include "iid.h"

#include "app_main.h"
//#include "lock_operation.h"

static void P_2_7_Anti_Lock_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_anti_lock = o->value->data.boolean;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_8_Child_Lock_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_child_lock = o->value->data.boolean;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_9_Button_Function_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_button_func = o->value->data.number.ucharValue;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_10_Away_Home_Mode_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_awayhome_mode = o->value->data.boolean;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_11_Two_Step_Verification_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_twostep_verify = o->value->data.boolean;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_12_Door_Lock_Local_Settings_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_local_settings = o->value->data.boolean;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_13_Face_Unlock_Sensitivity_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_face_sensitivity = o->value->data.number.ucharValue;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

static void P_2_14_Face_Unlock_Sleep_Time_doSet(property_operation_t *o)
{
    // 判断数据格式是否正确，如果错误，返回代码: OPERATION_ERROR_VALUE
    //    if (o->value->format != PROPERTY_FORMAT_BOOL)
    // 判断数据取值范围是否合法，如果不合法，返回代码: OPERATION_ERROR_VALUE
    // TODO: 执行写操作
//    xiaomi_lock.s_face_sleep_time = o->value->data.number.ucharValue;
//    lock_state_store();

    // 如果成功，返回代码: OPERATION_OK
    o->code = OPERATION_OK;
    
    return;
}

void S_2_Lock_doSet(property_operation_t *o)
{
    switch (o->piid)
    {
        case IID_2_7_Anti_Lock:
            P_2_7_Anti_Lock_doSet(o);
            break;

        case IID_2_8_Child_Lock:
            P_2_8_Child_Lock_doSet(o);
            break;

        case IID_2_9_Button_Function:
            P_2_9_Button_Function_doSet(o);
            break;

        case IID_2_10_Away_Home_Mode:
            P_2_10_Away_Home_Mode_doSet(o);
            break;
        
        case IID_2_11_Two_Step_Verification:
            P_2_11_Two_Step_Verification_doSet(o);
            break;
        
        case IID_2_12_Door_Lock_Local_Settings:
            P_2_12_Door_Lock_Local_Settings_doSet(o);
            break;
        
        case IID_2_13_Face_Unlock_Sensitivity:
            P_2_13_Face_Unlock_Sensitivity_doSet(o);
            break;
        
        case IID_2_14_Face_Unlock_Sleep_Time:
            P_2_14_Face_Unlock_Sleep_Time_doSet(o);
            break;
        
        default:
            o->code = OPERATION_ERROR_CANNOT_WRITE;
            break;
    }
}
